<?php

class Application_Model_ImputacionProyectosElectricidad extends Sgit_Model
{  
    protected $_name = 'proyectos_imputados_electricidad';
    protected $_primary = 'id';



    function getFacturacionMes($id_zona,$fecha=null,$anio=null,$mes=null)
    {

        if($fecha)
        {
            $fecha= new Zend_Date($fecha,Zend_Date::ISO_8601);
            $mes=$fecha->Get(Zend_Date::MONTH_SHORT);
            $anio=$fecha->Get(Zend_Date::YEAR);
        }

        $select = $this->getAdapter()->select();
        $select->from(array($this->_name),array('facturacion'=>new Zend_Db_Expr('SUM(fact_consumo)')))
        ->where("id_zona = ?",$id_zona)
        ->where("mes = ?",$mes)
        ->where("anio = ?",$anio)
        ->group(array('mes'));
        
        return $this->getAdapter()->fetchOne($select);
        
    }
    
    
    function getConsumos($id_proyecto,$limit=null)
    {
        
        $select = $this->getAdapter()->select();
        $select->from(array($this->_name),array('*'))
        ->where("id_proyecto = ?",$id_proyecto)
        ->order(array("anio DESC","mes DESC"));
 
          
        return $this->getAdapter()->fetchAll($select);
    }
    
    
    

    function getImputacionFecha($anio,$mes,$idZona)
    {
        $select = $this->getAdapter()->select();
        $select->from(array($this->_name),array('*'))
        ->joinLeft('proyectos', 'proyectos.id = proyectos_imputados_electricidad.id_proyecto',array('nombre'))
        ->where("proyectos_imputados_electricidad.id_zona = ?",$idZona)
        ->where("mes = ?",$mes)
        ->where("anio = ?",$anio);
         
        $rows1= $this->getAdapter()->fetchAll($select);
        return $this->assocArray2($rows1,'id_proyecto');
    }
    

    function getListadoImputacion($values = array(), $id = null)
    {

        $subselect = $this->getAdapter()->select()
            ->from('proyectos_imputados_electricidad', array('consumo_equipos_propios'))
            ->where('id_proyecto = pi.id_proyecto')
            ->where("mes = MONTH(SUBDATE(DATE_FORMAT(concat(pi.anio,'-',pi.mes,'-1'), '%Y-%m-%d'),  INTERVAL 1 MONTH))")
            ->where("anio = YEAR(SUBDATE(DATE_FORMAT(concat(pi.anio,'-',pi.mes,'-1'), '%Y-%m-%d'),  INTERVAL 1 MONTH))");


        $select = $this->getAdapter()->select()
            ->from(array('pi' => $this->_name),array('*','consumo_equipos_propios_anterior'=>"($subselect)"))
            ->joinLeft('proyectos', 'proyectos.id = pi.id_proyecto',array('proyecto'=>'nombre','orden','pot_contr','id_tip_disp','id_dir'));



        if (!is_null($id))
        {
            $select->where("proyectos.id= ?", $id);
        } 
        else
        {
            if (is_numeric($values['id_zona'])){
                $select->where("pi.id_zona= ?", $values['id_zona']);
                $where['id_zona = ?']=$values['id_zona'];
            }
                
            if (is_numeric($values['mes'])){
                $select->where("pi.mes= ?", $values['mes']);
                $where['mes = ?']=$values['mes'];
            }
                
            if (is_numeric($values['anio'])){
                $select->where("pi.anio= ?", $values['anio']);
                $where['anio = ?']=$values['anio'];
            }
                
            if (is_numeric($values['id_proyecto']))
                $select->where("pi.id_proyecto= ?", $values['id_proyecto']);
                
            if ($values['orden'])
                $select->where("proyectos.orden  LIKE ?", "%{$values['orden']}%");  
                
            if (is_numeric($values['id_dir']))
                $select->where("proyectos.id_dir= ?", $values['id_dir']); 
                
            if (is_numeric($values['id_sector']))
                $select->where("proyectos.id_sector= ?", $values['id_sector']); 
            
            if (is_numeric($values['mod_disp']))
                $select->where("pi.mod_disp= ?", $values['mod_disp']); 
                 
            if (is_numeric($values['id_tip_disp']))            
                $select->where("proyectos.id_tip_disp= ?", $values['id_tip_disp']);    
                   
            if (is_numeric($values['tip_fact']))
                $select->where("proyectos.tip_fact != ?", $values['tip_fact']);     

        }
        

        $imp=new Application_Model_ImputacionElectricidad();
        $imputaciones=$imp->getAll($where,null,null,null,null,null,array(new Zend_Db_Expr('concat(anio,mes) as f'),'publicado','facturacion'));
        $filas=    $imp->assocArray2($imputaciones,'f');





        $rows= $this->getAdapter()->fetchAll($select);


        foreach($rows as &$v)
        {
            
            $f=new Zend_Date(mktime(1, 1, 1, $v['mes'], 1, $v['anio']));
            $f1=new Zend_Date(mktime(1, 1, 1, $v['mes']-1, 1, $v['anio']));
            $f2=new Zend_Date(mktime(1, 1, 1, $v['mes']-2, 1, $v['anio']));
          
            $v['fecha'] =$f->toString('MMM-yyyy');
            $v['potencia_actual'] = Sgit_Util_Potencia::run($v['consumo_equipos_propios'], $f1);
            $v['potencia_anterior'] = Sgit_Util_Potencia::run($v['consumo_equipos_propios_anterior'], $f2);
            $v['potencia_incremento']=Sgit_Util_Incremento::run($v['potencia_actual'],$v['potencia_anterior']);
            $v['consumo_facturable']=$v['consumo_equipos_propios']*$v['coeficiente_facturacion'];
        
            $v['porcentaje_gestion']=($v['tip_gestion']==2) ? $v['por_gestion'] : 0;
        
            if($v['id_dir'])
                $v['jp']=Sgit_Cache::single()->model('Usuario')->getKey($v['id_dir']);
        
        
            if($v['id_tip_disp']==1){
		        $v['pot_tipo']='W/m2';
		    } elseif($v['id_tip_disp']==2) {
		        $v['pot_tipo']='W/rack';
		    }
        
        
          
             //incluido en colo
            if($v['tipo_facturacion']==1){
                $v['facturacion']=0;
                $v['consumo_facturable']=0;
            }
        
            //incluido en tarifa plana
            if($v['tipo_facturacion']==3){
                 $v['consumo_facturable']=0;
            }
        
        
            if($v['imputacion']!=0){
                $v['margen']=round(100*($v['facturacion']-$v['imputacion'])/$v['imputacion'],2);
            }else{
                $v['margen']=0.00;
            }
        
            $v['imputacion_total']=$v['imputacion']+$v['imputacion_exceso'];
        
        
        
            $key=$v['anio'].$v['mes'];
            
            $v['facturado']=(bool)$filas[$key]['facturacion'];
            $v['publicado']=(bool)$filas[$key]['publicado'];
        
        }
        

        return $rows;

    }
    
    
    
    
    
    
    
    
} 




